// 对象

// 对象字面量-----------------------------------

// 计算属性名，可以使用表达式返回值作为属性名
const obj = {
  [Math.random()]: 123
}

console.log(obj)

// Object,assign-----------------------------

// 将多个源对象的属性复制到一个目标对象中，源对象的属性会覆盖目标对象的同名属性，可用来实现浅拷贝

const source1 = {
  a: 123,
  b: 123,
}

const source2 = {
  b: 789,
  d: 789,
}

const target = {
  a: 456,
  b: 456,
}

const result = Object.assign(target, source1, source2)
console.log(target)
console.log(result === target)

// Object.is-----------------------------

// 用来处理 === 操作符NaN不等于自身，以及+0等于-0的问题，其他行为与===操作符保持一致

console.log(NaN === NaN)
console.log(+0 === -0)
console.log(-0 === 0)

console.log('------------------------------')

console.log(Object.is(NaN, NaN))
console.log(Object.is(+0, -0))
console.log(Object.is(-0, 0))
